#coding=utf-8 
##http://blog.csdn.net/v_JULY_v/article/details/6057286
#problem 28
#28.整数的二进制表示中1的个数（运算）题目：输入一个整数，求该整数的二进制表达中有多少个1。例如输入10，由于其二进制表示为1010，有两个1，因此输出2
'''
Created on 2012-8-27

@author: gazhang
'''
#x&x-1的效果在于么一次都把x的二进制表达式中最后一个1变成0，而之后的位置，无论x-1之后是0或1，由于x在那之后都为0，所以取与总是为0，同时那个位置之前的1不受影响
#所以x=x%（x-1)会导致x的二进制中1的数量减1
def function(x):
    count=0
    while(x):
        count=count+1
        x=x&(x-1)
    return count;

def cal2Num(x):
    count=0;
    while(x):
        if(x%2!=0):
            count=count+1;
        x=x>>1
        #print x
    return count;

while(1):
    x=int(raw_input("input x:"))
    print function(x)
    print cal2Num(x)